*: consitent get infoschema (#24230) #24529
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
cherry-pick #24230 to release-5.0
You can switch your code base to this Pull Request by using git-extras:
# In tidb repo: git pr https://github.com/pingcap/tidb/pull/24529
After apply modifications, you can push your change to this PR via:
What problem does this PR solve?
The main issue: #24233
Problem Summary: In some cases,
TxnCtx.InfoSchema
is directly used while there may beSnapshotInfoSchema
. There was a similar fix #15258, only for distsql. There are more left cases:While I want to replace all
TxnCtx.InfoSchema
intoinfoschema.GetInfoSchema(sessionCtx)
, I found that there will be a circular dependency inexpression -> ... -> infoschema -> expression
.So I moved
GetInfoSchema
function intosessionctx/variable
, as a method ofSessionVars
. Then replaced all calls intosessionVars.GetInfoSchema().(infoschema.InfoSchema)
. For expression package, it issessionVars.GetInfoSchema().(util.SequenceSchema)
. That is why this PR is large.The call is a bit longer with the extra
GetSessionVars()
and type cast.(infoschema.InfoSchema)
, but it works and removed one of foursessionctx
imports in the infoschema package. Hopefully infoschema will not depend on sessionctx in the future...Check List
Tests
Release note